www.gusucode.com > VC++ 特殊网址访问器源代码-源码程序 > VC++ 特殊网址访问器源代码-源码程序/code/Demo3/LogDlg.cpp

    //Download by http://www.NewXing.com
// LogDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Demo03.h"
#include "LogDlg.h"

//引用声明
#include "LogDaoSet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLogDlg dialog


CLogDlg::CLogDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLogDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CLogDlg)
	//}}AFX_DATA_INIT
}


void CLogDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLogDlg)
	DDX_Control(pDX, IDC_LIST_LOG, m_ctrList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLogDlg, CDialog)
	//{{AFX_MSG_MAP(CLogDlg)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_LOG, OnDblclkListLog)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLogDlg message handlers

BOOL CLogDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//初始化对话框中的内容
	//设置column名称
	m_ctrList.InsertColumn(0,"操作类型",LVCFMT_LEFT,80);
	m_ctrList.InsertColumn(1,"记录内容",LVCFMT_LEFT,120);
	m_ctrList.InsertColumn(2,"有无图片",LVCFMT_LEFT,50);
	m_ctrList.InsertColumn(3,"访问时间",LVCFMT_LEFT,150);

	//创建CLogDaoSet的实例
	CLogDaoSet m_LogDaoSet;
	//记录用户序号
	int i = 0;
	CString m_strSQL,strTemp;
	try
	{
		if(m_LogDaoSet.IsOpen())
			m_LogDaoSet.Close();
		
		//设置查询条件
		m_LogDaoSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"select * from pLog order by LogID DESC",0);
		//输出匹配上查询条件用户记录,直到记录为空
		while(!m_LogDaoSet.IsEOF())
		{	
			//将LogType转换
			switch(m_LogDaoSet.m_LogType)
			{
				case 2:
				{
					m_ctrList.InsertItem(i,"访问非法网址");
					break;
					;
				}
				default:
				{
					m_ctrList.InsertItem(i,"未知操作");
					break;
					;
				}
			}
			m_ctrList.SetItemText(i,1,m_LogDaoSet.m_LogInfo);
			//记录游标移到下一条记录
			switch(m_LogDaoSet.m_LogPicFlag)
			{
				case 0:
				{
					m_ctrList.SetItemText(i,2,"无图片");
					break;
					;
				}
				default:
				{
					m_ctrList.SetItemText(i,2,"有图片");
					break;
					;
				}
			}
			strTemp.Format("%d年%2d月%2d日%2d时%2d分",m_LogDaoSet.m_LogTime.GetYear(),
				m_LogDaoSet.m_LogTime.GetMonth(),m_LogDaoSet.m_LogTime.GetDay(),
				m_LogDaoSet.m_LogTime.GetHour(),m_LogDaoSet.m_LogTime.GetMinute());
			m_ctrList.SetItemText(i,3,strTemp);
			m_LogDaoSet.MoveNext();
			i++;
		}
		//关闭记录集
		if(m_LogDaoSet.IsOpen())
			m_LogDaoSet.Close();
	}
	//意外捕获
	catch(CDaoException*e)
	{
		e->ReportError ();
		//e->Delete ();
		return FALSE;
	}	
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CLogDlg::OnDblclkListLog(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;

	POSITION pos=m_ctrList.GetFirstSelectedItemPosition();
	if (pos==NULL)
	{
		//如果没有选择记录,则退出
		return;
	}
	//获取当前记录的位置游标
	int m_CurLog=m_ctrList.GetNextSelectedItem(pos);
	int i=0;
	//创建一个CFile来保存临时图片,
	CFile	m_PicFile;
	if(!m_PicFile.Open("C:\\1.jpg",CFile::modeCreate,NULL))
	{
		AfxMessageBox("临时文件打开失败!");
		return;
	}
	//打开数据库来获取图片内容
	CLogDaoSet	m_LogDaoSet;
	try
	{
		if(m_LogDaoSet.IsOpen())
			m_LogDaoSet.Close();
		
		//设置查询条件
		m_LogDaoSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"select * from pLog order by LogID DESC",0);
		//输出匹配上查询条件用户记录,直到记录为空
		while(!m_LogDaoSet.IsEOF())
		{	
			m_LogDaoSet.MoveNext();
			//如果是被双击的记录,则保存到临时文件中。
			if(i == m_CurLog)
			{
				m_PicFile.WriteHuge(m_LogDaoSet.m_LogPic.m_hData,
					m_LogDaoSet.m_LogPic.m_dwDataLength);
			}
			i++;
		}
		//关闭记录集
		if(m_LogDaoSet.IsOpen())
			m_LogDaoSet.Close();
		//关闭临时文件。
		m_PicFile.Close();
		//直接调用Windows相关程序来显示图片
		::WinExec("C:\\1.jpg",SW_SHOW);
	}
	//意外捕获
	catch(CDaoException*e)
	{
		e->ReportError ();
		//e->Delete ();
		return;
	}	

}